import java.lang.reflect.Array;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class MST1615 {
    /**
     * 面试题 16.15. 珠玑妙算
     * 珠玑妙算游戏（the game of master mind）的玩法如下。
     * 计算机有4个槽，每个槽放一个球，颜色可能是红色（R）、黄色（Y）、绿色（G）或蓝色（B）。例如，计算机可能有RGGB 4种（槽1为红色，槽2、3为绿色，槽4为蓝色）。
     * 作为用户，你试图猜出颜色组合。打个比方，你可能会猜YRGB。要是猜对某个槽的颜色，则算一次“猜中”；
     * 要是只猜对颜色但槽位猜错了，则算一次“伪猜中”。注意，“猜中”不能算入“伪猜中”。
     * 给定一种颜色组合solution和一个猜测guess，编写一个方法，返回猜中和伪猜中的次数answer，其中answer[0]为猜中的次数，answer[1]为伪猜中的次数。
     * 示例：
     * 输入： solution="RGBY",guess="GGRR"
     * 输出： [1,1]
     * 解释： 猜中1次，伪猜中1次。
     */

    public int[] masterMind(String solution, String guess) {
        char[] arr1 = solution.toCharArray();
        char[] arr2 = guess.toCharArray();
        char[] arr3 = new char[4];
        int[] a = {0, 0};
        Map<Character, Integer> hashmap = new HashMap<Character, Integer>();
        for (int i = 0; i < arr1.length; i++) {
            if (arr1[i] == arr2[i]) {
                a[0] = a[0] + 1;
            } else {
                arr3[i] = arr1[i];
                if (hashmap.containsKey(arr2[i])) {
                    hashmap.put(arr2[i], hashmap.get(arr2[i]) + 1);
                } else {
                    hashmap.put(arr2[i], 1);
                }

            }
        }
        for (int i = 0; i < arr3.length; i++) {
            if (hashmap.containsKey(arr3[i]) && hashmap.get(arr3[i]) > 0) {
                a[1] += 1;
                hashmap.replace(arr3[i], hashmap.get(arr3[i]) - 1);
            }
        }
        return a;
    }
}
